package memento;

import java.util.List;

import logica.Atributo;
import logica.AtributoIdentificadorFaltanteException;
import logica.AtributoRepetidoException;
import logica.Entidad;
import logica.EntidadIdentificadoraFaltanteException;
import logica.IdExternoRepetidoException;
import logica.Identificador;
import logica.IdentificadorVacioException;
import logica.SinNombreException;
import logica.TipoDeEntidad;

public class MementoEntidadLogica extends Memento {

	private List<Atributo> atributos;
	private List<Identificador> identificadores;
	private List<Entidad> idExternos;
	private TipoDeEntidad tipo;
	private String nombre;

	public MementoEntidadLogica(Entidad guardable)
	{
		super(guardable);
	
		this.atributos = guardable.getAtributos();
		this.identificadores = guardable.getIdentificadores();
		this.idExternos = guardable.getReferenciaAEntidadesExternas();
		this.tipo = guardable.getTipo();
		this.nombre = guardable.getNombre();
	}

	@Override
	public void cargarMemento() 
	{
		Entidad entidad = (Entidad) super.getGuardable();
		
		try 
		{
			entidad.setNombre(nombre);
			entidad.setTipo(tipo);
			entidad.setAtributos(atributos);
			entidad.setReferenciasExternas(idExternos);
			entidad.setIdentificadores(identificadores);
		}
		//ninguna de estas exceptions podría pasar ya que se cuando se pidieron los datos eran válidos.
		// tener cuidado con el de las entidades externas ya q si se la borra del modelo, ahí si podría haber problemas.
		catch (AtributoRepetidoException e) {
			e.printStackTrace();
		} catch (AtributoIdentificadorFaltanteException e) {
			e.printStackTrace();
		} catch (EntidadIdentificadoraFaltanteException e) {
			e.printStackTrace();
		} catch (IdentificadorVacioException e) {
			e.printStackTrace();
		} catch (IdExternoRepetidoException e) {
			e.printStackTrace();
		} catch (SinNombreException e) {
			e.printStackTrace();
		}
	
	}

}
